package br.com.officium.managedbean.cadastro;

import br.com.officium.entidade.cadastro.Comarca;
import br.com.officium.entidade.cadastro.UF;
import br.com.officium.sessionbean.ComarcaBsn;
import br.com.officium.util.BeanUtil;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

/**
 *
 * @author Ivo
 */
@ManagedBean
@ViewScoped
public class ComarcaBean extends CadastroAbstractBean {

    @EJB
    private ComarcaBsn comarcaBsn;
    private Comarca comarca;
    private List<Comarca> comarcas;
    private String uf;

    public ComarcaBean() {
        this.comarca = new Comarca();
    }

    @Override
    public String listar() {
        setCurrentState(LISTAR_STATE);
        comarcas = comarcaBsn.findAll();
        return "/cadastro/comarca.jsf";
    }

    @Override
    public void cadastrar() {

        try {
            comarca.setUf(uf);
            comarcaBsn.create(comarca);
            clear();
            BeanUtil.addInfo("Comarca criada com sucesso.");
            comarcas = comarcaBsn.findAll();
        } catch (Exception e) {
            BeanUtil.addError(e.getMessage());
        }

    }

    @Override
    public void editar() {

        try {
            comarca.setUf(uf);
            comarcaBsn.edit(comarca);
            clear();
            setCurrentState(LISTAR_STATE);
            BeanUtil.addInfo("Comarca alterada com sucesso.");
        } catch (Exception e) {
            BeanUtil.addError(e.getMessage());
        }

    }

    @Override
    public void excluir() {

        try {
            comarcaBsn.remove(comarca);
            BeanUtil.addInfo("Comarca removida com sucesso.");
            comarcas = comarcaBsn.findAll();
        } catch (Exception e) {
            BeanUtil.addError(e.getMessage());
        }

    }

    @Override
    public void prepararEditar() {
        setUf(comarca.getUf());
        super.prepararEditar();
    }

    @Override
    public boolean isPaginator() {
        return this.comarcaBsn.count() > getRowNumber();
    }

    private void clear() {
        this.comarca = new Comarca();
        super.cleanSubmittedValues(panelForm);
    }

    public List<UF> getUFs() {
        return UF.getUFSE();
    }

    public Comarca getComarca() {
        return comarca;
    }

    public void setComarca(Comarca comarca) {
        this.comarca = comarca;
    }

    public List<Comarca> getComarcas() {
        return comarcas;
    }

    public void setComarcas(List<Comarca> comarcas) {
        this.comarcas = comarcas;
    }

    public String getUf() {
        return uf;
    }

    public void setUf(String uf) {
        this.uf = uf;
    }

}
